package main

import (
	"fmt"
	"goServer/res"

	"github.com/gin-gonic/gin"
)

type Response struct {
	Code string `json:"code"`
	Data string `json:"data"`
	Msg  string `json:"msg"`
}

type User struct {
	Name     string `form:"username"`
	Password string `form:"password"`
}

func HandleLogin(c *gin.Context) {
	res.OkWithMsg(c, "登录成功")
}

func HandleUserIngo(c *gin.Context) {
	res.OkWithData(c, map[string]any{
		"name": "张三",
		"age":  18,
		"sex":  "男",
	})
}
func HandleGetLoginAuth(c *gin.Context) {
	name := c.Query("username")
	pwd := c.Query("password")
	c.DefaultQuery("username", "张三")
	fmt.Println(name, pwd)
}
func HandlePostLoginAuth(c *gin.Context) {
	// pname := c.PostForm("username")
	// ppwd, okb := c.GetPostForm("password")
	// fmt.Println(pname, ppwd, okb)
	var user User
	err := c.ShouldBindBodyWithJSON(&user)
	fmt.Println(user, err)
}
func HandleHtml(c *gin.Context) {
	c.HTML(200, "ces.html", gin.H{})
}

func HandleGroup(r *gin.RouterGroup) {
	r.GET("/user", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"msg": "用户信息",
		})
	})
}
func wa(c *gin.Context) {
	fmt.Println("wa请求部分")
	c.Next()
	fmt.Println("wa响应部分")
}
func wb(c *gin.Context) {
	fmt.Println("wb响应部分")
	c.JSON(200, gin.H{})
}
func globWa(c *gin.Context) {
	fmt.Println("全局中间件")
}
func main() {
	gin.SetMode(gin.ReleaseMode)
	// 初始化
	r := gin.Default()

	// 加载模板
	r.LoadHTMLGlob("template/*")

	// 静态文件 静态文件的路由不能再被使用
	r.Static("/static", "./static")
	r.StaticFile("mysql", "./static/mysql.png")

	r.Use(globWa)

	apiGroup := r.Group("/api")
	HandleGroup(apiGroup)

	// 挂载路由
	r.GET("/login", HandleLogin)
	r.GET("/userInfo", HandleUserIngo)
	r.GET("/html", HandleHtml)
	r.GET("/api/login/auth", HandleGetLoginAuth)
	r.POST("/api/login/auth", HandlePostLoginAuth)
	r.GET("/middware", wa, wb)

	// 绑定端口
	r.Run(":3008")
}
